লারাভেল মিউটেটর/কাস্ট (Laravel Mutator/Cast)

Web Development - লারাভেল (Laravel) - লারাভেল ইলোকোয়েন্ট ওআরএম (Laravel Eloquent ORM) |
7
7

লারাভেল (Laravel) একটি শক্তিশালী PHP ফ্রেমওয়ার্ক যা ডেভেলপারদের অ্যাপ্লিকেশন তৈরির সময় বিভিন্ন টুলস এবং ফিচার প্রদান করে। এর মধ্যে একটি গুরুত্বপূর্ণ ফিচার হলো মিউটেটর (Mutator) এবং কাস্ট (Cast)। এই ফিচারগুলো ব্যবহার করে আপনি ডাটাবেইজের মধ্যে থাকা ডেটার রূপান্তর বা পরিবর্তন সহজে করতে পারেন, যা আপনাকে ডেটার ভ্যালু সংরক্ষণ বা পাওয়ার সময় বিভিন্ন ধরনের কাস্টমাইজেশন করতে সহায়তা করে।

মিউটেটর (Mutator)

মিউটেটর হল এমন একটি ফিচার যা মডেল (Model) এর মধ্যে ডেটার মান সেট করার আগে বা আপডেট করার সময় অটোমেটিকভাবে ডেটা প্রক্রিয়া বা পরিবর্তন করে। যখন আপনি কোনো মডেল এর প্রপার্টি সেট করেন, তখন মিউটেটর তা প্রক্রিয়া করে এবং নতুন মান সেট করে।

মিউটেটর ব্যবহার

লারাভেলে মিউটেটর তৈরি করতে হলে, মডেল ক্লাসে একটি বিশেষ মেথড তৈরি করতে হয়। এই মেথডটি set{Attribute}Attribute নামে হবে, যেখানে {Attribute} হলো সেই প্রপার্টির নাম যার জন্য আপনি মিউটেটর তৈরি করতে চান।

উদাহরণস্বরূপ, যদি আপনি চান যে ব্যবহারকারীর নামটি সঠিকভাবে কিপ-টু-কেস (uppercase) এ স্টোর হোক, তাহলে আপনাকে মিউটেটর তৈরি করতে হবে:

class User extends Model
{
    // মিউটেটর: নামটি কিপ-টু-কেস হিসেবে সেট করা হবে
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = ucwords(strtolower($value));
    }
}

এখানে, setNameAttribute মেথডটি ব্যবহারকারীর নামটি গ্রহণ করবে, তা ছোট অক্ষরে রূপান্তরিত করবে এবং প্রথম অক্ষর বড় (uppercase) করবে।

মিউটেটরের সুবিধা

  • ডেটা ভ্যালিডেশন ও প্রক্রিয়াজাতকরণ: মিউটেটরের মাধ্যমে আপনি ডেটা সেট করার সময় সেটির ফর্ম্যাট বা মান কাস্টমাইজ করতে পারেন।
  • কোডের পুনঃব্যবহার: একাধিক জায়গায় একই লজিক প্রয়োগ করার পরিবর্তে আপনি একবার মিউটেটর তৈরি করলে সহজেই তা পুনঃব্যবহার করতে পারেন।

কাস্ট (Cast)

কাস্ট হল একটি সুবিধা যা ডেটাবেইজ থেকে ডেটা পাওয়ার সময় বা সেট করার সময় এটি একটি নির্দিষ্ট ডেটা টাইপে কনভার্ট করে দেয়। এটি ডেটাকে নির্দিষ্ট একটি টাইপে রূপান্তরিত করে, যেমন একটি স্ট্রিংকে ইনটিজারে, বা একটি ডেটাকে ডেটটাইম ইনস্ট্যান্সে রূপান্তর করা।

কাস্ট ব্যবহার

লারাভেল কাস্ট করার জন্য আপনি মডেল ক্লাসে $casts প্রপার্টি ব্যবহার করেন। এই প্রপার্টি একটি অ্যারে হিসেবে ডেটা টাইপ কাস্টিং নির্দেশ করে।

উদাহরণস্বরূপ, যদি আপনি চান যে একটি created_at ফিল্ড স্বয়ংক্রিয়ভাবে একটি Carbon ডেটটাইম ইনস্ট্যান্সে কাস্ট হয়ে যাক:

class Post extends Model
{
    protected $casts = [
        'created_at' => 'datetime',
    ];
}

এখানে, created_at ফিল্ডটি একটি ডেটাবেইজ ফিল্ড হিসেবে স্টোর হওয়া সত্ত্বেও, যখন আপনি এই ফিল্ডটি অ্যাক্সেস করবেন, এটি একটি Carbon ডেটটাইম অবজেক্ট হিসেবে রিটার্ন হবে। এর ফলে আপনি সরাসরি ডেটা থেকে ডেটটাইম সম্পর্কিত বিভিন্ন ফাংশন ব্যবহার করতে পারবেন।

কাস্টের সুবিধা

  • অটোমেটিক ডেটা কনভার্সন: কাস্টিং আপনাকে ডেটার রূপান্তর পরিচালনা করতে সাহায্য করে, যেমন স্ট্রিংকে ডেটাবেইজ থেকে ডেটটাইম অবজেক্টে বা ইনটিজার ভ্যালুতে কনভার্ট করা।
  • ডেটার প্রক্রিয়াজাতকরণ সহজতর: আপনি যদি ডেটা কাস্ট করতে চান এবং সেটা অনেক জায়গায় ব্যবহার করতে চান, তবে এটি ডেটার প্রক্রিয়াজাতকরণ সহজ এবং দ্রুত করে তোলে।

কাস্টের বিভিন্ন ধরনের

লারাভেলে কিছু সাধারণ কাস্ট টাইপ রয়েছে যেগুলি আপনি $casts প্রপার্টিতে ব্যবহার করতে পারেন:

  • integer: স্ট্রিংকে ইনটিজার টাইপে কাস্ট করে।
  • real: ফ্লোটিং পয়েন্ট ভ্যালুতে কাস্ট করে।
  • float: ফ্লোট ভ্যালুতে কাস্ট করে।
  • string: স্ট্রিং টাইপে কাস্ট করে।
  • boolean: বুলিয়ান ভ্যালুতে কাস্ট করে।
  • array: অ্যারে টাইপে কাস্ট করে।
  • object: অবজেক্ট টাইপে কাস্ট করে।
  • collection: কোলেকশন টাইপে কাস্ট করে।
  • datetime: ডেটাবেইজ ফিল্ড থেকে ডেটাটাইম অবজেক্টে কাস্ট করে।
  • timestamp: টাইমস্ট্যাম্প টাইপে কাস্ট করে।

কাস্টের উদাহরণ

class Post extends Model
{
    protected $casts = [
        'is_active' => 'boolean',
        'tags' => 'array',
        'published_at' => 'datetime',
    ];
}

এখানে:

  • is_active ফিল্ডটি একটি বুলিয়ান ভ্যালু হিসেবে কাস্ট হবে।
  • tags ফিল্ডটি একটি অ্যারে টাইপ হিসেবে কাস্ট হবে।
  • published_at ফিল্ডটি একটি ডেটটাইম অবজেক্টে কাস্ট হবে।

উপসংহার

লারাভেল মিউটেটর এবং কাস্ট আপনাকে ডেটা সেট করার এবং অ্যাক্সেস করার সময় ডেটার প্রক্রিয়াজাতকরণ এবং রূপান্তর সহজ করে তোলে। মিউটেটরগুলি ডেটা সেট করার সময় কাস্টম লজিক প্রয়োগ করতে সহায়তা করে, এবং কাস্ট ডেটাবেইজ থেকে ডেটা পেতে সময় ডেটার টাইপ রূপান্তর সহজ করে তোলে। এই দুটি ফিচার ব্যবহারের মাধ্যমে আপনি কোডকে আরও পরিষ্কার, কার্যকরী, এবং রিয়ুসেবল করতে পারবেন।

Content added By
Promotion